在建構一個ML產品時,大概可以分成五個部分:
往往大多數人會覺得需要花費最多的時間在優化ML模型上面,然而一個成功的ML產品,真正需要投資精力的部分是在於收集資料與建構基礎設施。
而在建構的過程中,人們常會犯的錯誤或是誤解大致上有十種:
建構出一個完整ML的產品可分為五個階段:
這五個階段都是非常重要的,輕忽或是略過其中一個階段,都很容易使你的ML產品走向失敗的結果。
由於ML模型的學習取決於大量的資料,而資料又都是人所給予的,縱使人們本身不是有意選取特定的資料,但是根據自身經驗出發,會下意識地存在偏見並影響所給予的資料,這些人類偏見舉例來說有:
既然知道模型很容易含有偏見,那麼評估其包容性便是很重要的一點,混淆矩陣(Confusion matrix) 就是一個很好的判斷度量指標。
混淆矩陣是由標籤(Label,可想成是正確答案)和模型預測(Prediction)所構成的一個2x2矩陣,所以根據標籤和預測的正負,可以將矩陣分成4個種類:
是不是很難記呢?沒關係,以前我也覺得混淆矩陣好容易搞混(難道這是它叫做混淆矩陣的原因嗎?),這邊提供一個我記這個東西的想法:
從上面的分類來看,可以發現有2種類型是錯誤(Error)的來源,即是模型產生偏見後造成的錯誤,它們分別是FP和FN,也有人稱這兩種錯誤為Type-I和Type-II錯誤,因此若要讓模型盡量不要有偏見,更具包容性,減低這兩類型的錯誤便是很重要的,講到這邊我們便得來提一下,只看準確率(Accuracy) 會有什麼盲點,會有盲點的話該怎麼辦。
根據混淆矩陣的元素,一般有4個指標是常拿來使用的:準確率(Accuracy)、精確率(Precision)、召回率(Recall)、F1-分數(F1-score)
依照你的任務目標,注重的指標也會有所不同,舉例來說:現在有1000筆交易紀錄,其中990筆是正常,10筆異常,你訓練了一個分類ML模型預測出995筆正常,5筆異常,混淆矩陣如下表:
(預測)交易正常 | (預測)交易異常 | |
---|---|---|
(標籤)交易正常 | 985 | 5 |
(標籤)交易異常 | 10 | 0 |
這時如果單看Accuracy的話,有高達98.5%的表現,會讓人誤以為模型的表現非常的好。但是,對於銀行來說,會讓他們虧錢的反而是那10筆交易異常的部分,ML模型卻都沒有找出來。若進一步來看Precision是98.99%,Recall是99.49%,而在這個任務下,關鍵在於異常的有沒有被找出來,換句話說就是FP要是0,FN反而不重要了,畢竟被模型誤判為異常頂多就是客戶打電話來確認,銀行並不會有金錢上的損失,從這個角度來看,Precision做到100% 才是符合銀行需求的模型,Recall或是Accuracy有多高對這個任務來說並不是非常重要。
人皆生而平等(All men are created equal),相信這是所有人都常聽到的一句名言,在現今講求男女平等、公平正義的時代,一個社會的進步與否跟能否平等的對待不同個體,有著相當重要的關係,所以訓練出來的ML模型也必須要考慮公平的問題。
一個具有包容性的模型,在不同子群組的同一個人,模型所預測出來的結果應該要一致,不能因為群組不同而有差異,否則這樣就會產生歧視(Discrimination),舉個簡單的例子來說,判斷是否要貸款給一個人,理論上看的應該是他的信用紀錄,而不是他的皮膚顏色是黑人還是白人。數學上直觀地來說就是,一個模型在不同的群體間,混淆矩陣的指標要盡量一致。
今天大概介紹了Google在建構ML產品上的經驗、ML模型會有偏見與訓練模型時要考慮到包容性,明天我們將實際操作 “Google Cloud Platform”